напиши создателю mdlvis
если найдёшь его а также у него будут исходники и желание фиксить баги то мб пофиксит
но скорее всего как минимум 2 и 3 пунктов будут отсутствовать
Погляди оригинал способность "Призыв к оружию" и "Работника" с "Ополченцем".
Как я помню у обоих указан одинаковый список зданий, проблема в редакторе объектов.
Поскольку никто не ответил, то пришлось решить вопрос самому. Описанный ниже способ пригодится и для изменения других параметров в файле w3i. Для решения я использовал программу W3x2Lni
Запускаем W3x2Lni и помещаем карту сохраненную в классическом редакторе в DnD область программы.
Конвертируем карту в форма Lni, выбрав первый вариант (синяя кнопка). Внутри прожать все флаги.
В директории W3x2Lni появится папка с наименованием вашей карты. Внутри нужно найти папку table, а внутри неё файл w3i (расшифрованный). Скопируйте файл.
Проделываем пункты 1-3 но уже с картой сохраненной в reforged редакторе. Получаем w3i расшифрованный из ref версии карты.
Открываем текстовым редактором w3i из классик редактора и w3i из реф редактора.
Переносим все новые строки из w3i ref в w3i классик.
В готовом w3i классик меняем значения:
format_version = 31 (было 25)
supported_modes = 1
Строка supported_modes это искомая настройка графического режима (SD/HD = 0, SD = 1, HD = 2). Если format_version не перевести с 25 на 31, то строка supported_modes будет проигнорирована (см. структуру w3i).
Помещаем готовый w3i в папку W3x2Lni/наша карта из классик редактора/table
Снова открываем W3x2Lni переносим папку классик карты в DnD область программы.
Конвертируем карту в Obj формат (оранжевая кнопка).
"Набор звуков" нельзя сделать через триггеры, но можно попробовать через импорт файлов заменить стандартные файлы в уже существующих наборах.
Для этого импортируемому файлу надо прописать путь заменяемого.
Тут 2 варианта, надо в редактор ИИ загрузить нестанадратные данные по объектам
Если используется 100% стандартное ИИ то надо его обучить.. делается это простым гуи триггером
Событие - игрок повышет уровень
Условие (2 условия), Тип героя= ваш герой, владелец юнита =управляется компьютером
Действие - учить скилы:
Учим способность R
Учим способность Q - Q спосбность приоритетной прокачки
Учим способность W
Учим способность E
А тут надо быть внимательным... изучение ульты требуется указать вначале... чтобы герой выучил ульту на 6 уровне...
или тут можно зарандомить или написать своё алгоритм.. или же чтобы ИИ учил скилы по другом условиям...в зависимости от тот как у него идёт игра
так зачем ты системные-игровые файлы заменяешь? не думаю что тут кто-то больше графики и звуков меняет. Хотя у меня ещё изменённый редактор, главное меню и кастомные кампании есть... это всё не может иметь отношения к десконнектам (и не имеет)
Ладно если по делу, с этой карты тоже десинхнуло, отключил локальные файлы - так же десинхнуло. Во все остальные могу нормально играть.. ну как играть, я сам ливаю на 2 минуте, играть то не во что
Mate, ну очивидно ошибка реализации, ибо используются одни и те же массивы, в которых происходит коллизия, одни и те же ячейки используют раные способности. Вовсе я бы не советовал так замарачиватся с гуи, а прочитать статьи на jass и забить на все это дело, юзая хештаблицы.
если ты создаешь нейтрально-враждебных то нужно им в игровых константах менять значения
пошамань с этими значениями и все норм будет, ну а если у тебя монстры под контролем других игроков а не нейтралов, то тогда не знаю даже
guard distance - это расстояние на котором крипы агряться
guard return distance - это на какое расстояние мобы могут отходить от место их создания, если они отошли на 1000 они возвращаются обратно
guard return time - типо тоже самое что с расстоянием, только время
при нажатии эскейпа выставляешь переменную булевой на тру, перед тем как проиграть следующую камеру/реплику/покакать, проверяешь значение этой переменной, если соответствует истине, пропускаешь все остальные действия, перед этим можно запустить другой триггер который отвечает за конец синематика (т.е. выдача заданий, выставление камеры в норму, выход из синематика и т.д.)
Maxsavin, я каждой карте из кампаний даю свой кэш, чтобы не перепуталось ничего.
Не знаю, что получилось бы, сделай я один кэш-файл на всю кампу и грузи карты потом не по порядку. Проверять не буду. Кампания - это пак карт.
Хозяин Миров, для начала прочитать весь список функций
или научится юзать поиск по функциям
ибо GetRandomInt(n,m)
где n начало промежутка из которого берутся числа а m конец
В общем во время сохранения файла я попробую продублирую весь код, во время загрузки файла я сначало выполню файл в котором чисто Preload("Код") чтобы его занести на компьютер клиента, а только потом начну выполнять Preload("\")\n <Код>\n//"). Надеюсь сработает. А про то что никто в этом не видит смысла, так часто говорят.
Получилось так что я допустил туже ошибку...
Может есть какая-нибудь нативка/функция которая будет синхронизировать информацию? Если нет, то скорее всего я зря пытаюсь.
Есть какая-нибудь статья про TriggerSyncReady и Start? xgm.guru/p/wc3/159609, тут обсуждается похожая ситуация.
В общем дождался друга чтоб протестить TriggerSyncStart и Ready, в итоге я поставил их перед функцией Preloader(сначало Start потом Ready) и всё десинк пропал.
Но это не помогло найти твои ресурсы. У тебя нет ни опубликованных, ни снятых с публикации ресурсов.
Счетчик ресурсов в профиле не меняли давно - сломаться это не могло.
Есть только записи в блоге, а это не листится в списках ресурсов.
Записи блогов работают как нужно - мы не оцениваем их качество, но и не продвигаем в индексе.
В связи с этим появился вопрос - а были ли у тебя ресурсы?
Я знаю, что был xgm.guru/p/wc3/new-rules-maps но автора публикации сменили на niken 31.12.2021
Не знаю, зачем, но уже не важно - ресурс больше не представляет ценности.
Всем спасибо, проблему решил за счет проверки на цвет/номер игрока как индекс в массиве переменных. Все работает как запланировано.
Вопрос вдогонку: как можно задавать сам индекс переменной-массива?)
З.Ы. Массивы конечно зло, но другого способа хранить инфо по одному спеллу, не используя множество переменных - пока не умею.
Pingvinromeo, проблема в том что ты фигню творишь
если спел применён в точку то точка есть
перемещение это 1 действие
за это время точка не исчезнет
короче пруфы того что не работает
Alexey103, а у меня работает, проверял. тут ошибка в названии переменной, скорее всего, зачем ты задал такое. Мб оно слишком длинное и через нижнее подчеркивание? и путь модель указывают в jass не через один обратный слэш "/", а через двойной слэш "//". Это на гуи один, на джаз два слэша
От контекста зависит, например на текущем патче я бы сделал так...
При создании заносим юнит в переменную, юнит создаётся с москитом
Далее юнита можно всегда выбирать триггерно
Если надо снова начать выделять юнита, можно ловить клик мыши рядом с юнитом....
Если любой патч и нодо чтобы враг был невыделяем, например типа способность, невыделяемый и нельзя навести... например сларк в ульте, срабатывают только скилы по площади, есть 1 старый баг по возвращению выделения после москита, я его не особо помню но на форуме 3жды упоминался (мне не надо и я не запомнил)
Исходные данные: юнит не выделяем и он москит, нужно вернуть выделение
В любом случае приказ ПКМ - это приказ smart, то есть попробуй такой триггер:
Событие - Generic unit Отдал приказ цель-точка
Условие - Unit-type of (Triggering unit) равно Твой_городской_защитник и (Issued order) равно smart
Действие - Pause (Triggering unit), Issue order with no target Стоп (Triggering unit) и Unpause (Triggering unit)
Кнопки некоторые обновил, но это всё временно. По остальному - поток мыслей, это не в вопросах должно быть. Нужно как-то организовываться и приходить к концепту.
Для новичков в очередной раз рекомендую WC3Pather (есть в инвентаре юного модмейкера), главное знать, что на что менять. Или то, что подсказал alexprey.
100% будет работать, если заменить стандартные текстуры деревьев, а в самих моделях вместо пути к текстуре указать соответствующий Replaceable ID. (Если порченные версии тоже заменить под новую модель, то ещё и порча будет корректно работать =)
Дальше пришла в голову другая идея. Думаю, можно сделать с помощью ремонта зданий Альянса: на месте смерти героя создаётся здание с моделью креста со здоровьем 1/100 ед., а союзные герои ремонтируя крест будут повышать её здоровье, получается некая иллюзия прогресс бара. И если спрятать способность ремонта с помощью функции HideAbilityButton( ) из мемхака, то будет ли она срабатывать при нажатии на ПКМ? Также, как отловить момент полного ремонта здания? С помощью таймера проверять процент здоровья каждые доли секунды?
раскрыть
scope HeroRevive initializer Initialization
struct herorevive
private unit dyingUnit
private unit reincarnate
private real life
private thistype prev
private thistype next
public static constant trigger trig = CreateTrigger( )
public static constant timer period = CreateTimer( )
private static method iterate takes nothing returns nothing
local thistype this = thistype( 0 ).next
loop
exitwhen ( this == 0 )
if ( GetWidgetLife( this.reincarnate ) > this.life ) then
set this.life = GetWidgetLife( this.reincarnate )
elseif ( GetWidgetLife( this.reincarnate ) >= GetUnitState( this.reincarnate, UNIT_STATE_MAX_LIFE ) ) then
call ReviveHero( this.dyingUnit, GetUnitX( this.dyingUnit ), GetUnitY( this.dyingUnit ), true )
call RemoveUnit( this.reincarnate )
set this.reincarnate = null
set this.life = 0.0
set this.prev.next = this.next
set this.next.prev = this.prev
if ( thistype( 0 ).next == 0 ) then
call PauseTimer( thistype.period )
endif
call thistype.deallocate( this )
elseif ( GetWidgetLife( this.reincarnate ) <= this.life ) then
set this.life = 1.0
call SetWidgetLife( this.reincarnate, this.life )
endif
set this = this.next
endloop
endmethod
public static method actions takes nothing returns nothing
local thistype this = thistype.allocate( )
set this.next = 0
set this.prev = thistype( 0 ).prev
set this.next.prev = this
set this.prev.next = this
set this.dyingUnit = GetDyingUnit( )
set this.reincarnate = CreateUnit( GetOwningPlayer( this.dyingUnit ), 'h003', GetUnitX( this.dyingUnit ), GetUnitY( this.dyingUnit ), 0.0 )
set this.life = 1.0
call SetUnitPathing( this.reincarnate, false )
call SetWidgetLife( this.reincarnate, this.life )
if ( this.prev == 0 ) then
call TimerStart( thistype.period, 0.10, true, function thistype.iterate )
endif
endmethod
public static constant method conditions takes nothing returns boolean
return IsUnitType( GetDyingUnit( ), UNIT_TYPE_HERO )
endmethod
endstruct
public function Initialization takes nothing returns nothing
call TriggerRegisterPlayerUnitEvent( herorevive.trig, Player( 1 ), EVENT_PLAYER_UNIT_DEATH, null )
call TriggerRegisterPlayerUnitEvent( herorevive.trig, Player( 2 ), EVENT_PLAYER_UNIT_DEATH, null )
call TriggerRegisterPlayerUnitEvent( herorevive.trig, Player( 3 ), EVENT_PLAYER_UNIT_DEATH, null )
call TriggerRegisterPlayerUnitEvent( herorevive.trig, Player( 4 ), EVENT_PLAYER_UNIT_DEATH, null )
call TriggerAddCondition( herorevive.trig, Condition( function herorevive.conditions ) )
call TriggerAddAction( herorevive.trig, function herorevive.actions )
endfunction
endscope
Вот только если спрятать кнопку через HideAbilityButton( ), то способность ремонта зданий исчезает и не работает через ПКМ.
Кароч
есть инфа
что если хочешь стандартный скилл с небольшим изменением
но не можешь отловить его цели
то можно тупо ловить урон
при этом кастуя скилл с даммика
и вылавливать урон только от даммика
да?
Но это вариант для тех кому лень...
а тебе я так вижу не лень
Ответ на мой вопрос: используйте способность "Канал", как основу для ваших способностей. Потому что AI никогда не использует способности, которые основаны на способности "Канал" сам.
В редакторе объектов поищи поля, в которых написан приказ (скорее всего, там в конце написано "on" и "off" ) и триггерно отдай приказ, указанный в поле.
» WarCraft 3 / Как определить минимальное расстояние
» Melee Campaign Heroes / Melee Campaign Heroes Pack - 167 maps
» Melee Campaign Heroes / Melee Campaign Heroes Pack - 167 maps
» WarCraft 3 / Ошибка в Mdlvis
» WarCraft 3 / Моделирование
» WarCraft 3 / Спавн юнитов у здания.
» Администрация XGM / Приглашения в закрытые проекты
» WarCraft 3 / Графика не переключается на Reforged
» WarCraft 3 / Проблема с кастомным героем
» WarCraft 3 / Проблема с триггером
» WarCraft 3 / Не работает перенос моделей в редактор.
» WarCraft 3 / Retera Model Studio не запускается
» WarCraft 3 / Как сделать простой рандом?
» WarCraft 3 / Использование файлов preload
» Администрация XGM / Не отображаются ресурсы
» WarCraft 3 / Триггерное заклинание
» WarCraft 3 / Запрет выбора юнита
» WarCraft 3 / Авангард Нежити (кооп версия на 2)
» Администрация XGM / поиск по сайту
» WarCraft 3 / Путь текстуры
» WarCraft 3 / Как отловить цвет
» WarCraft 3 / Высота молнии
» WarCraft 3 / В какие кампании поиграть?
» Администрация XGM / Режимы публикации ресурсов
» WarCraft 3 / Автоприменение способности